package hhm.javamode.singleton;

public class LazySingleton {
	// 设立静态变量
	private volatile static LazySingleton lazySingleton = null;

	private LazySingleton() {
		// 私有化构造函数
		System.out.println("-->懒汉式单例模式开始调用构造函数");
	}

	// 开放一个公有方法，判断是否已经存在实例，有返回，没有新建一个在返回
	public static LazySingleton getInstance() {
		System.out.println("-->懒汉式单例模式开始调用公有方法返回实例");
		if (lazySingleton == null) {
			synchronized (LazySingleton.class) {
				if (lazySingleton == null) {

					System.out.println("-->懒汉式构造函数的实例当前并没有被创建");
					lazySingleton = new LazySingleton();
				}
			}

		} else {
			System.out.println("-->懒汉式构造函数的实例已经被创建");
		}
		System.out.println("-->方法调用结束，返回单例");
		return lazySingleton;
	}
}
